package com.xkcyy.one.executor;

import com.xkcyy.one.entity.Tool;

/**
 * 工具执行器接口
 * 
 * @author yuand
 */
public interface ToolExecutor {

    /**
     * 判断当前执行器是否支持该工具
     * 
     * @param tool 工具定义
     * @return 是否支持
     */
    boolean supports(Tool tool);

    /**
     * 执行工具调用
     * 
     * @param tool  工具定义
     * @param input 输入参数
     * @return 执行结果
     */
    Object execute(Tool tool, Object input);

    /**
     * 验证工具输入
     * 
     * @param tool  工具定义
     * @param input 输入参数
     */
    void validateInput(Tool tool, Object input);
}